﻿using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Web.DynamicData;
using log4net;
using UTSDAL.LINQSQL.DAO;

public partial class ForeignKey_EditField : System.Web.DynamicData.FieldTemplateUserControl {

    private static readonly ILog logger = LogManager.GetLogger(typeof(ForeignKey_EditField));
    protected void Page_Load(object sender, EventArgs e) {
        if (DropDownList1.Items.Count == 0) {
            if (!Column.IsRequired) {
                DropDownList1.Items.Add(new ListItem("[Not Set]", ""));
            }


            if (!ForeignKeyColumn.Name.Equals("ModuleEvent"))
            {
                PopulateListControl(DropDownList1);
            }
            else
            {
                DropDownList1.DataSource = new ModuleEventDAO().selectAll();
                DropDownList1.DataBind();
                DropDownList1.DataTextField = "ModuleEventLabel";
                DropDownList1.DataValueField = "ModuleEventId";
            }
        }


        
        
    }

    protected override void OnDataBinding(EventArgs e) {
        base.OnDataBinding(e);

        if (Mode == DataBoundControlMode.Edit) {
            string foreignkey = ForeignKeyColumn.GetForeignKeyString(Row);
            ListItem item = DropDownList1.Items.FindByValue(foreignkey);
            if (item != null) {
                DropDownList1.SelectedValue = foreignkey;
            }
        }
    }

    protected override void ExtractValues(IOrderedDictionary dictionary) {
        // If it's an empty string, change it to null
        string val = DropDownList1.SelectedValue;
        if (val == String.Empty)
            val = null;

        ExtractForeignKey(dictionary, val);
    }

    public override Control DataControl {
        get {
            return DropDownList1;
        }
    }
}
